// 需要安装 npm install socket.io-client
import { io } from 'socket.io-client' // socket.io
import axios from 'axios'
// import { none } from 'ol/centerconstraint'  // 是否自动添加？

export default {
  data () {
    return {
      namespace: '/track', // /dbox', // data box
      socket: null, // 要使用的websocket
      srvIP: 'http://localhost',
      sPort: '9088'
    }
  },
  watch: {
    // watch
  },
  mounted () {
    // mounted
  },
  methods: {
    /**
     * @description 初始化socket
     * @param {Stringy} srvIP 服务端地址
     * @param {Stringy} sPort 服务端口
     * @param {Stringy} namespace 命名空间--只能接收此空间的信息
     */
    // initSocket () {
    //   // this.socket = io.connect(location.protocol + '//' + document.domain + ':' + location.port + namespace);
    //   this.socket = io.connect(this.srvIP + ':' + this.sPort + this.namespace)
    //   console.log(this.socket)
    //   // 设置监听信息
    //   this.socket.on('location', (data) => {
    //     // console.log(data)
    //     // this.dataProcess(data, this.test)
    //     this.updateSpriteLocation(data) // 精灵动画处理animsocket
    //   })
    // },
    initSocket () {
      this.socket = io.connect(this.srvIP + ':' + this.sPort + this.namespace)
      // 设置监听信息
      this.socket.on('connected', (data) => {
        // 显示连接信息
        console.log(data)
      })
      this.socket.on('send', (data) => {
        console.log(data)
      })
      // 获取位置
      this.socket.on('location', (data) => {
        console.log(data)
        // 动画层精灵移动
        if (this.animSource) {
          this.updateSpriteLocation(data)
        }
        // POI移动
        this.updatePOILocation(data)
      })
    },
    /**
     * @description 销毁socket
     */
    destroySocket () {
      console.log('销毁socket')
    },
    /**
     * @description 重连socket
     */
    reconnectSocket () {
      console.log('重连socket')
    },
    /**
     * @description 添加车辆信息
     * @param {Stringy} sBusID 车辆的ID-- 关联的北斗卡ID
     * @param {Stringy} sTaskID 任务的ID--车辆归属任务
     */
    addBusInfo (sBusID, sTaskID) {
      axios.post('join', {
        busid: sBusID,
        taskid: sTaskID
      }).then(function (response) {
        console.log(response)
      }).catch(function (error) {
        console.log(error)
      })
    },
    /**
     * @description 加入轨迹聊天室
     * @param {Stringy} sRoomName 聊天室的名称--任务的ID
     * @param {Array} aCardList 关联任务的北斗卡数组
     */
    joinTrackRoom (sRoomID, aCardList) {
      // this.socket.join(sRoomID) // 用户进入房间 https://www.cnblogs.com/mazg/p/5470979.html
      // this.currentRoom[this.socket.id] = sRoomID // 记录用户的当前房间
      // 让用户知悉他进入了新的房间
      // io.to(sRoomID).emit('join', { roomid: sRoomID, data: aBusList })
      this.socket.emit('join', { roomid: sRoomID, cardlist: aCardList })
      // this.socket.emit('join', { roomid: sRoomID, data: aBusList })

      // io.of(this.namespace).in(sRoomID).allSockets().then(items => {
      //   console.log(items.forEach(item => {
      //     console.log('看看这是啥：' + item)
      //   }))
      // })
      return false
    },
    /**
     * @description 退出指定的房间
     * @param {Stringy} sRoomID 房间号
     * @param {Stringy} socketID 连接号
     */
    leaveTrackRoom (sRoomID, socketID = null) {
      // console.log(this.socket)
      this.socket.emit('leave', { roomid: sRoomID, sid: socketID })
    },
    // 退出所有的房间
    leaveAllTrackRoom (sRoomID, socketID = null) {
      // console.log(this.socket)
      this.socket.emit('leaveAll')
    },
    // 给定北斗卡的id获取最后位置 -- 待定是否使用其他方法发送 接收 --- 不用socket方式？
    getTraceByID (sCardID) {
      // 调用后台getCardLatestByID方法
      this.socket.emit('getlatest', { id: sCardID })
    },
    // 给定北斗卡行动轨迹（点列表）
    getTrackByID (sCardID) {
      // 调用后台getCardLatestByID方法 -- 待定是否使用其他方法发送 接收 --- 不用socket方式？
      this.socket.emit('getlatest', { id: sCardID })
    },
    /**
     * @description 数据处理Socket
     * @param {Stringy} param 服务端地址
     * @param {Stringy} procfunc 处理方法
     */
    dataProcess (param, procfunc) {
      procfunc(param)
    },
    test () {
      this.socket.emit('test')
    }
  }
}
